package models

import "ztool/common"

// NoReaderJson 无人观看返回的结构/**
type NoReaderJson struct {
	App           string `json:"app" form:"app"`
	Schema        string `json:"schema" form:"schema"`
	Vhost         string `json:"vhost" form:"vhost"`
	MediaServerId string `json:"mediaServerId"`
	Stream        string `json:"stream" form:"stream"`
}

// MediaServerConfig zl media 详细信息
type MediaServerConfig struct {
	Mediaport     string `json:"http.port"`
	Rtmpport      string `json:"rtmp.port"`
	Rtspport      string `json:"rtsp.port"`
	Rtpport       string `json:"rtp_proxy.port"`
	Rtcport       string `json:"rtc.port"`
	AutoCloseTime string `json:"general.streamNoneReaderDelayMS"`
	MediaServerId string `json:"general.mediaServerId"`
}

// MediaConfigs zlmediakit配置信息
type MediaConfigs struct {
	common.Response
	Data []MediaServerConfig `json:"data"`
}

// StreamBaseInfo 流基础信息
type StreamBaseInfo struct {
	App         string `json:"app"`
	ReaderCount int    `json:"readerCount"`
	Schema      string `json:"schema"`
	Stream      string `json:"stream"`
	OriginUrl   string `json:"originUrl"`
	CreateStamp int    `json:"createStamp"`
	AliveSecond int    `json:"aliveSecond"`
	//#数据产生速度，单位byte/s
	BytesSpeed int    `json:"bytesSpeed"`
	Vhost      string `json:"vhost"`
}

// StreamInfoTrack 媒体信息中的音视频信息
type StreamInfoTrack struct {
	//音频通道数
	Channels int `json:"channels"`
	//编码类型名称
	CodecIdName string `json:"codec_id_name"`
	//音频采样位数
	SampleBit int `json:"sample_bit"`
	//音频采样率
	SampleRate int `json:"sample_rate"`
	//# Video = 0, Audio = 1
	CodecType int     `json:"codec_type"`
	Fps       float64 `json:"fps,int"`
	Height    int     `json:"height"`
	Width     int     `json:"width"`
}

// StreamPreview 预览地址
type StreamPreview struct {
	WSFlv   string `json:"ws_flv"`
	HTTPFlv string `json:"http_flv"`
	Rtsp    string `json:"rtsp"`
	Rtmp    string `json:"rtmp"`
}

// StreamInfo 流信息
type StreamInfo struct {
	StreamBaseInfo
	Tracks []StreamInfoTrack `json:"tracks"`
}

// StreamInfoWeb 传递到前端的结构体
type StreamInfoWeb struct {
	StreamBaseInfo
	Audio   StreamInfoTrack `json:"audio"`
	Video   StreamInfoTrack `json:"video"`
	Preview StreamPreview   `json:"preview"`
}

// StreamList 流列表信息/**
type StreamList struct {
	common.Response
	Data []StreamInfo `json:"data"`
}
